﻿Option Strict On
Option Explicit On
Option Infer On

Imports System
Imports System.Collections.Generic
Imports GenDotNet.TemplateSupport
Imports GenDotNet.Task.Common

Public MustInherit Class MemberInfo
   Inherits BaseInfo

   Private mModifiers As MemberModifiers
   Private mParameters As ParameterInfoCollection
   Private mTypeInfo As TypeInfo
   Private mInterfaceItems As InterfaceItemInfoCollection

   Public Sub New( _
            ByVal name As String, _
            ByVal typeInfo As TypeInfo, _
            ByVal scope As Scope, _
            ByVal modifiers As MemberModifiers, _
            ByVal ParamArray parameters() As ParameterInfo)
      MyBase.New(name, scope)
      mModifiers = modifiers
      mParameters = New ParameterInfoCollection
      mInterfaceItems = New InterfaceItemInfoCollection
      Me.mTypeInfo = typeInfo
      For Each param In parameters
         mParameters.Add(param)
      Next
   End Sub

   Public Property Modifiers() As MemberModifiers
      Get
         Return mModifiers
      End Get
      Set(ByVal value As MemberModifiers)
         mModifiers = value
      End Set
   End Property

   Public ReadOnly Property Parameters() As ParameterInfoCollection
      Get
         Return mParameters
      End Get
   End Property

   Public ReadOnly Property TypeInfo() As TypeInfo
      Get
         Return mTypeInfo
      End Get
   End Property

   Public ReadOnly Property InterfaceItems() As InterfaceItemInfoCollection
      Get
         Return mInterfaceItems
      End Get
   End Property

End Class
